AIC average by age group

Run regressions between model parameters and age

## 
## Call:
## lm(formula = LL ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -157.706  -55.851    8.701   52.092  131.154 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -243.141     19.401 -12.532   <2e-16 ***
## age            2.813      1.149   2.448   0.0157 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 67.27 on 133 degrees of freedom
## Multiple R-squared:  0.04313,    Adjusted R-squared:  0.03593 
## F-statistic: 5.994 on 1 and 133 DF,  p-value: 0.01565
## 
## Call:
## lm(formula = alphaPosChoice ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.28765 -0.19218 -0.08989  0.12089  0.68734 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.863e-01  7.683e-02   3.727 0.000286 ***
## age         8.182e-05  4.551e-03   0.018 0.985681    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2664 on 133 degrees of freedom
## Multiple R-squared:  2.431e-06,  Adjusted R-squared:  -0.007516 
## F-statistic: 0.0003233 on 1 and 133 DF,  p-value: 0.9857
## 
## Call:
## lm(formula = alphaNegChoice ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.19615 -0.12346 -0.06146  0.00172  0.82184 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.29767    0.06518   4.567 1.12e-05 ***
## age         -0.01183    0.00386  -3.064  0.00264 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.226 on 133 degrees of freedom
## Multiple R-squared:  0.06595,    Adjusted R-squared:  0.05892 
## F-statistic:  9.39 on 1 and 133 DF,  p-value: 0.002642
## 
## Call:
## lm(formula = alphaPosComp ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.20486 -0.16290 -0.11220  0.01203  0.87932 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.261130   0.077306   3.378 0.000959 ***
## age         -0.006186   0.004579  -1.351 0.178941    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.268 on 133 degrees of freedom
## Multiple R-squared:  0.01354,    Adjusted R-squared:  0.006124 
## F-statistic: 1.826 on 1 and 133 DF,  p-value: 0.1789
## 
## Call:
## lm(formula = alphaNegComp ~ age, data = model_params)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.2291 -0.2075 -0.1851  0.1059  0.7982 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.253218   0.095197   2.660  0.00878 **
## age         -0.002721   0.005638  -0.483  0.63020   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3301 on 133 degrees of freedom
## Multiple R-squared:  0.001748,   Adjusted R-squared:  -0.005758 
## F-statistic: 0.2329 on 1 and 133 DF,  p-value: 0.6302
## 
## Call:
## lm(formula = betaAgency ~ age, data = model_params)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -9.553 -4.101 -1.937  3.475 19.945 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  3.91959    1.65918   2.362   0.0196 *
## age          0.24602    0.09827   2.504   0.0135 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.753 on 133 degrees of freedom
## Multiple R-squared:  0.04501,    Adjusted R-squared:  0.03783 
## F-statistic: 6.268 on 1 and 133 DF,  p-value: 0.0135
## 
## Call:
## lm(formula = betaMachine ~ age, data = model_params)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -8.060 -3.211 -1.095  1.786 22.739 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  4.89653    1.45762   3.359  0.00102 **
## age          0.15066    0.08633   1.745  0.08327 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.054 on 133 degrees of freedom
## Multiple R-squared:  0.02239,    Adjusted R-squared:  0.01504 
## F-statistic: 3.046 on 1 and 133 DF,  p-value: 0.08327
## 
## Call:
## lm(formula = agencyBonus ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.78412 -0.22038 -0.11946  0.06671  2.45157 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.663550   0.150879   4.398 2.22e-05 ***
## age         -0.014854   0.008936  -1.662   0.0988 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5231 on 133 degrees of freedom
## Multiple R-squared:  0.02035,    Adjusted R-squared:  0.01299 
## F-statistic: 2.763 on 1 and 133 DF,  p-value: 0.09882

Learning rate model

## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: estimate ~ age_z * valence * agency + (1 | subject_id)
## Data: learning_rates
##                 Effect        df         F p.value
## 1                age_z 1, 133.00    3.75 +    .055
## 2              valence 1, 399.00   8.68 **    .003
## 3               agency 1, 399.00      0.28    .596
## 4        age_z:valence 1, 399.00      0.89    .345
## 5         age_z:agency 1, 399.00      0.10    .751
## 6       valence:agency 1, 399.00 25.75 ***   <.001
## 7 age_z:valence:agency 1, 399.00    2.96 +    .086
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: estimate ~ age_z * valence * agency + (1 | subject_id)
##    Data: data
## 
## REML criterion at convergence: 180.5
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -1.4215 -0.6024 -0.3468  0.1215  3.2414 
## 
## Random effects:
##  Groups     Name        Variance Std.Dev.
##  subject_id (Intercept) 0.007237 0.08507 
##  Residual               0.068473 0.26167 
## Number of obs: 540, groups:  subject_id, 135
## 
## Fixed effects:
##                          Estimate Std. Error         df t value Pr(>|t|)    
## (Intercept)              0.191380   0.013432 133.000000  14.248  < 2e-16 ***
## age_z                   -0.026041   0.013444 133.000000  -1.937  0.05486 .  
## valence1                -0.033171   0.011261 399.000000  -2.946  0.00341 ** 
## agency1                  0.005975   0.011261 399.000000   0.531  0.59600    
## age_z:valence1          -0.010648   0.011271 399.000000  -0.945  0.34537    
## age_z:agency1           -0.003581   0.011271 399.000000  -0.318  0.75086    
## valence1:agency1        -0.057139   0.011261 399.000000  -5.074 5.97e-07 ***
## age_z:valence1:agency1  -0.019387   0.011271 399.000000  -1.720  0.08619 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) age_z valnc1 agncy1 ag_z:v1 ag_z:g1 vln1:1
## age_z       0.000                                            
## valence1    0.000  0.000                                     
## agency1     0.000  0.000 0.000                               
## age_z:vlnc1 0.000  0.000 0.000  0.000                        
## age_z:gncy1 0.000  0.000 0.000  0.000  0.000                 
## vlnc1:gncy1 0.000  0.000 0.000  0.000  0.000   0.000         
## ag_z:vln1:1 0.000  0.000 0.000  0.000  0.000   0.000   0.000
## 
##  Paired t-test
## 
## data:  model_params$alphaPosChoice and model_params$alphaNegChoice
## t = 6.4697, df = 134, p-value = 1.698e-09
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  0.1254031 0.2358366
## sample estimates:
## mean difference 
##       0.1806199
## 
##  Paired t-test
## 
## data:  model_params$alphaPosComp and model_params$alphaNegComp
## t = -1.1817, df = 134, p-value = 0.2394
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -0.12816925  0.03229399
## sample estimates:
## mean difference 
##     -0.04793763

Plot relations between model parameters and age

LS0tCnRpdGxlOiAiRTIgVm9DIEFuYWx5c2VzIFBhcnQgMzogUkwgQW5hbHlzZXMiCmRhdGU6IDEvOC8yNApvdXRwdXQ6CiAgICBodG1sX2RvY3VtZW50OgogICAgICAgIGRmX3ByaW50OiAncGFnZWQnCiAgICAgICAgdG9jOiB0cnVlCiAgICAgICAgdG9jX2Zsb2F0OgogICAgICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlCiAgICAgICAgICAgIHNtb290aF9zY3JvbGw6IHRydWUKICAgICAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlCiAgICAgICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgICAgIHNlbGZfY29udGFpbmVkOiB0cnVlCi0tLQoKYGBge3IgY2h1bmsgc2V0dGluZ3MsIGluY2x1ZGUgPSBGQUxTRX0KIyBzZXQgY2h1bmsgc2V0dGluZ3MKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UpCmtuaXRyOjpvcHRzX2NodW5rJHNldChkcGk9NjAwKQprbml0cjo6b3B0c19rbml0JHNldChyb290LmRpciA9IHJwcm9qcm9vdDo6ZmluZF9yc3R1ZGlvX3Jvb3RfZmlsZSgpKQpgYGAKCmBgYHtyIGxvYWQgbGlicmFyaWVzLCBpbmNsdWRlID0gRn0KCiNsb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShnbHVlKQpsaWJyYXJ5KGFmZXgpCmxpYnJhcnkobGF0ZXgyZXhwKQoKI2xvYWQgc2NyaXB0cwpzb3VyY2UoJ2FuYWx5c2lzX3NjcmlwdHMvdm9jX2Z1bmN0aW9ucy5SJykKYGBgCgpgYGB7ciBpbXBvcnQgZGF0YX0KIyByZWFkIGluIHBhcnRpY2lwYW50IGFnZXMKcGFydGljaXBhbnRfYWdlcyA8LSByZWFkX2NzdignZGF0YS92b2Nfc3ViX2luZm8uY3N2JykgCgojIHJlYWQgaW4gbGVhcm5pbmcgZGF0YQpsZWFybmluZ19kYXRhIDwtIHJlYWRfY3N2KCdkYXRhL3Byb2Nlc3NlZC9sZWFybmluZ19kYXRhLmNzdicpCgojIGV4Y2x1ZGUgZmlyc3Qtc3RhZ2UgbWlzc2VzIGFuZCBmaXJzdC1zdGFnZSBSVCA8IDE1MCBtcwpsZWFybmluZ19kYXRhX2ZpbHRlcmVkIDwtIGxlYXJuaW5nX2RhdGEgJT4lCiAgZmlsdGVyKHN0YWdlXzFfcnQgPiAxNTApCgojZXhjbHVkZSBwYXJ0aWNpcGFudHMgd2hvIG1hZGUgbW9yZSB0aGFuIDMwMCBvZiB0aGUgc2FtZSBhZ2VuY3kgZGVjaXNpb25zCnN0YWdlMV9kZWNpc2lvbnMgPC0gbGVhcm5pbmdfZGF0YV9maWx0ZXJlZCAlPiUKICBncm91cF9ieShzdWJqZWN0X2lkKSAlPiUKICBzdW1tYXJpemUoYWdlbmN5X2Nob2ljZXMgPSBzdW0oc3RhZ2VfMV9jaG9pY2UgPT0gMSkpICU+JQogIGZpbHRlcihhZ2VuY3lfY2hvaWNlcyA8IDI5OSkgJT4lCiAgZmlsdGVyKGFnZW5jeV9jaG9pY2VzID4gMTUpCgpwYXJ0aWNpcGFudF9hZ2VzIDwtIHBhcnRpY2lwYW50X2FnZXMgJT4lCiAgZmlsdGVyKHN1YmplY3RfaWQgJWluJSBzdGFnZTFfZGVjaXNpb25zJHN1YmplY3RfaWQpCgojIyByZWFkIGluIGFpY3MKYWljc19hbGwgPSByZWFkX2NzdigiUkxfbW9kZWxpbmcvb3V0cHV0L2FpY3NfYWxsXzE2X21vZGVsc18xMDBpdGVyLmNzdiIpICU+JQogIHJlbmFtZShzdWJqZWN0X2lkID0gc3ViSUQpCgojIGNvbWJpbmUgd2l0aCBhZ2VzCmFpY3MgPC0gaW5uZXJfam9pbihhaWNzX2FsbCwgcGFydGljaXBhbnRfYWdlcywgYnkgPSAnc3ViamVjdF9pZCcpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBjYXNlX3doZW4oYWdlIDwgMTMgfiAiQ2hpbGRyZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlID4gMTIuOTkgJiBhZ2UgPCAxOCB+ICJBZG9sZXNjZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPiAxNy45OSB+ICJBZHVsdHMiKSkKCmFpY3MkYWdlX2dyb3VwIDwtIGZhY3RvcihhaWNzJGFnZV9ncm91cCwgbGV2ZWxzID0gYygiQ2hpbGRyZW4iLCAiQWRvbGVzY2VudHMiLCAiQWR1bHRzIikpCiAgICAgICAgIAoKI3Bpdm90IGxvbmdlcgptb2RlbF9yZXN1bHRzIDwtIHBpdm90X2xvbmdlcihhaWNzLCAKICAgICAgICAgICAgICAgICAgICAgIGNvbHMgPSBvbmVBbHBoYV9vbmVCZXRhOmZvdXJBbHBoYV90d29CZXRhX2FnZW5jeUJvbnVzLAogICAgICAgICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAibW9kZWwiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gIkFJQyIpCgoKbW9kZWxfcmVzdWx0cyRtb2RlbCA8LSBmYWN0b3IobW9kZWxfcmVzdWx0cyRtb2RlbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIm9uZUFscGhhX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmVBbHBoYV90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFfb25lQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhX3R3b0JldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYVZhbGVuY2VkX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYVZhbGVuY2VkX3R3b0JldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VyQWxwaGFfb25lQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdXJBbHBoYV90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25lQWxwaGFfb25lQmV0YV9hZ2VuY3lCb251cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uZUFscGhhX3R3b0JldGFfYWdlbmN5Qm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYV9vbmVCZXRhX2FnZW5jeUJvbnVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFfdHdvQmV0YV9hZ2VuY3lCb251cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhVmFsZW5jZWRfb25lQmV0YV9hZ2VuY3lCb251cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhVmFsZW5jZWRfdHdvQmV0YV9hZ2VuY3lCb251cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdXJBbHBoYV9vbmVCZXRhX2FnZW5jeUJvbnVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91ckFscGhhX3R3b0JldGFfYWdlbmN5Qm9udXMiKSkKbW9kZWxfcmVzdWx0cyA8LSBtb2RlbF9yZXN1bHRzICU+JQogIG11dGF0ZShhZ2VuY3lCb251cyA9IGNhc2Vfd2hlbihzdHJfZGV0ZWN0KG1vZGVsLCAiYWdlbmN5IikgfiAiV2l0aCBBZ2VuY3kgQm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RyX2RldGVjdChtb2RlbCwgImFnZW5jeSIpIH4gIk5vIEFnZW5jeSBCb251cyIpLAogICAgICAgICBzaG9ydE5hbWUgPSBzdHJfcmVtb3ZlKG1vZGVsLCAnX2FnZW5jeUJvbnVzJykpCgptb2RlbF9yZXN1bHRzJHNob3J0TmFtZSA8LSBmYWN0b3IobW9kZWxfcmVzdWx0cyRzaG9ydE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJvbmVBbHBoYV9vbmVCZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uZUFscGhhX3R3b0JldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFfb25lQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYV90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhVmFsZW5jZWRfb25lQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYVZhbGVuY2VkX3R3b0JldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91ckFscGhhX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91ckFscGhhX3R3b0JldGEiKSkKYGBgCgojICBBSUMgYXZlcmFnZSBieSBhZ2UgZ3JvdXAgCmBgYHtyIHBsb3QgQUlDIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gOCwgZmlnLmhlaWdodCA9IDUsIHVuaXRzID0gImluIn0KI3N1bW1hcml6ZQptb2RlbF9zdW1tYXJ5IDwtIG1vZGVsX3Jlc3VsdHMgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBzaG9ydE5hbWUsIGFnZW5jeUJvbnVzKSAlPiUKICBzdW1tYXJpemUobWVhbl9haWMgPSBtZWFuKEFJQykpCgojIyBQbG90IHRoZSByZXN1bHRzIGJ5IGFnZSBncm91cCAKQUlDX2FnZV9wbG90IDwtIGdncGxvdChtb2RlbF9zdW1tYXJ5LCBhZXMoeCA9IGFnZV9ncm91cCwgeSA9IG1lYW5fYWljLCBmaWxsID0gc2hvcnROYW1lKSkrCiAgZmFjZXRfd3JhcCh+YWdlbmN5Qm9udXMpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiLCBjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX21hbnVhbChuYW1lID0gIk1vZGVsIiwKICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKGNvbG9yOCwgY29sb3IxLCBjb2xvcjIsIGNvbG9yMywgY29sb3I0LCBjb2xvcjUsIGNvbG9yNiwgY29sb3I3LCBjb2xvcjEpLAogICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICBjKFRlWCgnJG9uZVxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyRvbmVcXGFscGhhXFxfdHdvXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvQ2hvaWNlXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b0Nob2ljZVxcYWxwaGFcXF90d29cXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29WYWxlbmNlZFxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29WYWxlbmNlZFxcYWxwaGFcXF90d29cXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyRmb3VyXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJGZvdXJcXGFscGhhXFxfdHdvXFxiZXRhJykpKSArIAogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygzNTAsIDY1MCkpICsKICB5bGFiKCJNZWFuIEFJQyIpICsKICB4bGFiKCIiKSArCiAgdm9jX3RoZW1lKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNjAsIGhqdXN0ID0gMSkpCkFJQ19hZ2VfcGxvdApgYGAKCgojICBFeGFtaW5lIGFnZS1yZWxhdGVkIGNoYW5nZSBpbiBwYXJhbWV0ZXIgZXN0aW1hdGVzIGZyb20gbW9kZWxzCmBgYHtyIGxvYWQgcGFyYW1ldGVycyBmcm9tIHdpbm5pbmcgbW9kZWx9Cm1vZGVsX3BhcmFtcyA8LSByZWFkX2NzdigiUkxfbW9kZWxpbmcvb3V0cHV0L21vZGVsX2ZpdHNfcmVhbF9kYXRhL2ZvdXJBbHBoYV90d29CZXRhX2FnZW5jeUJvbnVzLmNzdiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJuZWdMTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2dQb3N0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFJQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCSUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFQb3NDaG9pY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFOZWdDaG9pY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFQb3NDb21wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhTmVnQ29tcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZXRhQWdlbmN5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJldGFNYWNoaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFnZW5jeUJvbnVzIikpIAoKI2FkZCBzdWIgSUQgYW5kIGluZm9ybWF0aW9uCnN1YmplY3RfaWQgPC0gYWljc19hbGwgJT4lIHNlbGVjdChzdWJqZWN0X2lkKSAlPiUgdW5pcXVlKCkKbW9kZWxfcGFyYW1zIDwtIGJpbmRfY29scyhzdWJqZWN0X2lkLCBtb2RlbF9wYXJhbXMpCm1vZGVsX3BhcmFtcyA8LSBpbm5lcl9qb2luKHBhcnRpY2lwYW50X2FnZXMsIG1vZGVsX3BhcmFtcywgYnkgPSBjKCJzdWJqZWN0X2lkIikpCgpgYGAKCgojIFJ1biByZWdyZXNzaW9ucyBiZXR3ZWVuIG1vZGVsIHBhcmFtZXRlcnMgYW5kIGFnZQpgYGB7ciBwYXJhbWV0ZXIgcmVncmVzc2lvbnN9Cm1vZGVsX3BhcmFtcyRMTCA8LSBtb2RlbF9wYXJhbXMkbmVnTEwgKiAtMQoKIyBMb2cgbGlrZWxpaG9vZApzdW1tYXJ5KGxtKExMIH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKIyBub3Qgc2lnbmlmaWNhbnQKCiMgQWxwaGEgUG9zIENob2ljZQpzdW1tYXJ5KGxtKGFscGhhUG9zQ2hvaWNlIH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKI25vdCBzaWduaWZpY2FudAoKIyBBbHBoYSBOZWcgQ2hvaWNlCnN1bW1hcnkobG0oYWxwaGFOZWdDaG9pY2UgfiBhZ2UsIGRhdGEgPSBtb2RlbF9wYXJhbXMpKQojIHNpZ25pZmljYW50CgojIEFscGhhIFBvcyBDb21wCnN1bW1hcnkobG0oYWxwaGFQb3NDb21wIH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKI25vdCBzaWduaWZpY2FudAoKIyBBbHBoYSBOZWcgQ29tcApzdW1tYXJ5KGxtKGFscGhhTmVnQ29tcCB+IGFnZSwgZGF0YSA9IG1vZGVsX3BhcmFtcykpCiNub3Qgc2lnbmlmaWNhbnQKCiMgQmV0YSBBZ2VuY3kKc3VtbWFyeShsbShiZXRhQWdlbmN5IH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKIyBzaWduaWZpY2FudAoKIyBCZXRhIEJhbmRpdApzdW1tYXJ5KGxtKGJldGFNYWNoaW5lIH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKIyBub3Qgc2lnbmlmaWNhbnQKCiMgYWdlbmN5IGJvbnVzCnN1bW1hcnkobG0oYWdlbmN5Qm9udXMgfiBhZ2UsIGRhdGEgPSBtb2RlbF9wYXJhbXMpKQojIG5vdCBzaWduaWZpY2FudAoKYGBgCgojIExlYXJuaW5nIHJhdGUgbW9kZWwKYGBge3IgbGVhcm5pbmcgcmF0ZSByZWdyZXNzaW9ufQojIyBMZWFybmluZyByYXRlIG1vZGVsCmxlYXJuaW5nX3JhdGVzIDwtIG1vZGVsX3BhcmFtcyAlPiUKICBwaXZvdF9sb25nZXIoY29scyA9IGMoYWxwaGFQb3NDaG9pY2U6YWxwaGFOZWdDb21wKSwKICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAibGVhcm5pbmdSYXRlIiwKICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gImVzdGltYXRlIikgJT4lCiAgc2VsZWN0KHN1YmplY3RfaWQsIGFnZSwgbGVhcm5pbmdSYXRlLCBlc3RpbWF0ZSkgJT4lCiAgdW5pcXVlKCkgJT4lCiAgbXV0YXRlKHZhbGVuY2UgPSBjYXNlX3doZW4oc3RyX2RldGVjdChsZWFybmluZ1JhdGUsICJQb3MiKSB+ICJQb3NpdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2RldGVjdChsZWFybmluZ1JhdGUsICJOZWciKSB+ICJOZWdhdGl2ZSIpLAogICAgICAgICBhZ2VuY3kgPSBjYXNlX3doZW4oc3RyX2RldGVjdChsZWFybmluZ1JhdGUsICJDaG9pY2UiKSB+ICJDaG9pY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2RldGVjdChsZWFybmluZ1JhdGUsICJDb21wIikgfiAiQ29tcCIpKQoKbGVhcm5pbmdfcmF0ZXMkYWdlX3ogPC0gc2NhbGVfdGhpcyhsZWFybmluZ19yYXRlcyRhZ2UpCgpsZWFybmluZ19yYXRlX21vZGVsIDwtIG1peGVkKGVzdGltYXRlIH4gYWdlX3ogKiB2YWxlbmNlICogYWdlbmN5ICsgKDF8c3ViamVjdF9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGxlYXJuaW5nX3JhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJTIikKbGVhcm5pbmdfcmF0ZV9tb2RlbApzdW1tYXJ5KGxlYXJuaW5nX3JhdGVfbW9kZWwpCiMgbWFpbiBlZmZlY3Qgb2YgYWdlCiMgbWFpbiBlZmZlY3Qgb2YgdmFsZW5jZQojIHZhbGVuY2UgeCBhZ2VuY3kgaW50ZXJhY3Rpb24KCgojdCB0ZXN0IGJldHdlZW4gYWxwaGEgcG9zIGNob2ljZSBhbmQgYWxwaGEgbmVnIGNob2ljZQp0LnRlc3QobW9kZWxfcGFyYW1zJGFscGhhUG9zQ2hvaWNlLCBtb2RlbF9wYXJhbXMkYWxwaGFOZWdDaG9pY2UsIHBhaXJlZCA9IFQpCiNzaWduaWZpY2FudAoKI3QgdGVzdCBiZXR3ZWVuIGFscGhhIHBvcyBjb21wIGFuZCBhbHBoYSBuZWcgY29tcAp0LnRlc3QobW9kZWxfcGFyYW1zJGFscGhhUG9zQ29tcCwgbW9kZWxfcGFyYW1zJGFscGhhTmVnQ29tcCwgcGFpcmVkID0gVCkKI25vdCBzaWduaWZpY2FudAoKYGBgCgoKIyBQbG90IHJlbGF0aW9ucyBiZXR3ZWVuIG1vZGVsIHBhcmFtZXRlcnMgYW5kIGFnZQpgYGB7ciBhZ2UgcGFyYW1ldGVyIHBsb3QsIGZpZy53aWR0aCA9IDcsIGZpZy5oZWlnaHQgPSA0LCB1bml0cyA9ICJpbiJ9CgpwYXJhbXNfbG9uZyA8LSBtb2RlbF9wYXJhbXMgJT4lCiAgcGl2b3RfbG9uZ2VyKG5hbWVzX3RvID0gInBhcmFtIiwKICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gImVzdGltYXRlIiwKICAgICAgICAgICAgICAgY29scyA9IGMoYWxwaGFQb3NDaG9pY2U6YWdlbmN5Qm9udXMpKSAKCnBhcmFtc19sb25nJHBhcmFtIDwtIGZhY3RvcihwYXJhbXNfbG9uZyRwYXJhbSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJhbHBoYVBvc0Nob2ljZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYU5lZ0Nob2ljZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYVBvc0NvbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFOZWdDb21wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJldGFBZ2VuY3kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmV0YU1hY2hpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWdlbmN5Qm9udXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoVGVYKCIkXFxhbHBoYV97Y2hvaWNlXyt9JCIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCIkXFxhbHBoYV97Y2hvaWNlXy19JCIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCIkXFxhbHBoYV97Y29tcF8rfSQiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgiJFxcYWxwaGFfe2NvbXBfLX0kIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoIiRcXGJldGFfe2FnZW5jeX0kIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoIiRcXGJldGFfe21hY2hpbmV9JCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWdlbmN5fkJvbnVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKCnBhcmFtc19wbG90IDwtIGdncGxvdChwYXJhbXNfbG9uZywgYWVzKHggPSBhZ2UsIHkgPSBlc3RpbWF0ZSwgY29sb3IgPSBwYXJhbSkpICsKICBmYWNldF93cmFwKH5wYXJhbSwgc2NhbGUgPSAiZnJlZSIsIGxhYmVsbGVyID0gbGFiZWxfcGFyc2VkLCBucm93ID0gMikgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWVzKGZpbGwgPSBwYXJhbSkpICsKICB5bGFiKCJQYXJhbWV0ZXIgRXN0aW1hdGUiKSArCiAgeGxhYigiQWdlIikgKwogIHZvY190aGVtZSgpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCnBhcmFtc19wbG90CmBgYAoKCg==